import java.util.Stack;

public class aaa_Stack{
     public static void main(String[] args) {

          // 初始化一个空的整型栈 s
          Stack<Integer> s = new Stack<>();

          // 向栈顶添加元素
          s.push(10);
          s.push(20);
          s.push(30);

          // 检查栈是否为空   输出：false
          System.out.println(s.isEmpty());

          // 获取栈的大小   输出：3
          System.out.println(s.size());

          // 获取栈顶元素   输出：30
          System.out.println(s.peek());

          // 删除栈顶元素
          s.pop();

          // 输出新的栈顶元素：20
          System.out.println(s.peek());
          System.out.println();


          s.push(40);
          s.push(50);
          s.push(60);
//1. 获取从栈底计数的第 k个元素（入栈顺序）！！！
//因为 Stack继承自 Vector，可以直接使用索引访问：
          int k1 = 2; 
          if (k1 > 0 && k1 <= s.size()) {
               Integer kthElement1 = s.elementAt(k1 - 1);  // 或使用 s.get(k-1)
               System.out.println("从栈底开始的第" + k1 + "个元素：" + kthElement1);
          } else {
               System.out.println("无效的位置");
          }      

//2. 获取从栈顶计数的第 k个元素（出栈顺序）！！！
          int k2 = 1; 
          if (k2 > 0 && k2 <= s.size()) {
          Integer kthElement2 = s.elementAt(s.size() - k2);  // 或使用 s.get(s.size() - k)
          System.out.println("从栈顶开始的第" + k2 + "个元素：" + kthElement2);
          } else {
               System.out.println("无效的位置");
          } 

// 获取栈里的所有数
//1. 直接输出整个栈————直接输出栈中所有元素（顺序是从栈底到栈顶）
          System.out.println("栈中所有元素(从栈底到栈顶): " + s);  // 输出类似: [10, 20]

//2. 使用增强for循环（从栈底到栈顶）(从栈底到栈顶)
          System.out.print("栈中所有元素: ");
          for(Integer element : s) {
               System.out.print(element + " ");  // 输出: 10 20
          }
          System.out.println();

//3. 使用索引遍历（从栈底到栈顶）
          System.out.print("栈中所有元素: ");
          for(int i = 0; i < s.size(); i++) {
               System.out.print(s.get(i) + " ");  // 输出: 10 20
          }
          System.out.println();

     }
}